home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v08i057: NetHack3 - display oriented dungeons & dragons (Ver. 3.0), Patch6d
- Message-ID: <4846@tekred.CNA.TEK.COM>
- Date: 22 Nov 89 19:47:48 GMT
- Sender: nobody@tekred.CNA.TEK.COM
- Lines: 2278
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
- Posting-number: Volume 8, Issue 57
- Archive-name: NetHack3/Patch6d
- Patch-To: NetHack3: Volume 7, Issue 56-93
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 4 (of 15)."
- # Contents: patches06j
- # Wrapped by billr@saab on Wed Nov 22 10:50:08 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'patches06j' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'patches06j'\"
- else
- echo shar: Extracting \"'patches06j'\" \(55338 characters\)
- sed "s/^X//" >'patches06j' <<'END_OF_FILE'
- X*** src/Old/pager.c Sun Nov 19 13:04:16 1989
- X--- src/pager.c Fri Nov 17 19:32:03 1989
- X***************
- X*** 1,4 ****
- X! /* SCCS Id: @(#)pager.c 3.0 88/10/25 */
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X--- 1,4 ----
- X! /* SCCS Id: @(#)pager.c 3.0 89/11/15
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X***************
- X*** 8,14 ****
- X
- X /* block some unused #defines to avoid overloading some cpp's */
- X #define MONATTK_H
- X! #include "hack.h"
- X
- X #ifndef NO_SIGNAL
- X #include <signal.h>
- X--- 8,14 ----
- X
- X /* block some unused #defines to avoid overloading some cpp's */
- X #define MONATTK_H
- X! #include "hack.h"
- X
- X #ifndef NO_SIGNAL
- X #include <signal.h>
- X***************
- X*** 23,38 ****
- X
- X static char hc = 0;
- X
- X! static void page_more();
- X! static boolean clear_help P((CHAR_P));
- X! static boolean valid_help P((CHAR_P));
- X
- X int
- X dowhatis()
- X {
- X FILE *fp;
- X char bufr[BUFSZ+6];
- X! register char *buf = &bufr[6], *ep, q;
- X #ifdef OS2_CODEVIEW
- X char tmp[PATHLEN];
- X
- X--- 23,70 ----
- X
- X static char hc = 0;
- X
- X! static void FDECL(page_more, (FILE *,int));
- X! static boolean FDECL(clear_help, (CHAR_P));
- X! static boolean FDECL(valid_help, (CHAR_P));
- X
- X+ /*
- X+ * print out another possibility for dowhatis. "new" is the possible new
- X+ * string; "out_flag" indicates whether we really want output, and if
- X+ * so what kind of output: 0 == no output, 1 == "(or %s)" output.
- X+ * Returns TRUE if this new string wasn't the last string printed.
- X+ */
- X+
- X+ static boolean
- X+ outspec(new, out_flag)
- X+ char *new;
- X+ int out_flag;
- X+ {
- X+ static char old[50];
- X+
- X+ if (!strcmp(old, new))
- X+ return FALSE; /* don't print the same thing twice */
- X+
- X+ if (out_flag)
- X+ pline("(or %s)", new);
- X+
- X+ Strcpy(old, new);
- X+ return 1;
- X+ }
- X+
- X int
- X dowhatis()
- X {
- X FILE *fp;
- X char bufr[BUFSZ+6];
- X! register char *buf = &bufr[6], *ep;
- X! uchar q, typ;
- X! register int i;
- X! coord cc;
- X! boolean oldverb = flags.verbose;
- X! boolean found_in_file = FALSE;
- X! int found = 0;
- X! register struct monst *mtmp;
- X!
- X #ifdef OS2_CODEVIEW
- X char tmp[PATHLEN];
- X
- X***************
- X*** 43,247 ****
- X #else
- X fp = fopen(DATAFILE, "r");
- X #endif
- X! if(!fp)
- X #ifdef MACOS
- X! fp = openFile(DATAFILE);
- X! if (!fp)
- X #endif
- X pline("Cannot open data file!");
- X! else {
- X! coord cc;
- X! uchar r;
- X! boolean oldverb = flags.verbose;
- X
- X! pline ("Specify unknown object by cursor? ");
- X! q = ynq();
- X! if (q == 'q') {
- X! (void) fclose(fp);
- X! return 0;
- X! } else if (q == 'n') {
- X! cc.x = cc.y = -1;
- X! pline("Specify what? ");
- X! r = readchar();
- X! } else {
- X! cc.x = u.ux;
- X! cc.y = u.uy;
- X! selobj:
- X! if(flags.verbose)
- X pline("Please move the cursor to an unknown object.");
- X! else
- X pline("Pick an object.");
- X! getpos(&cc, FALSE, "an unknown object");
- X! if (cc.x < 0) {
- X (void) fclose(fp); /* sweet@scubed */
- X flags.verbose = oldverb;
- X return 0;
- X- }
- X- flags.verbose = FALSE;
- X- r = levl[cc.x][cc.y].scrsym;
- X- if (!r || !levl[cc.x][cc.y].seen) r = ' ';
- X }
- X
- X! #define conv_sym(x) if(r == showsyms.x) q = defsyms.x
- X! conv_sym(stone);
- X! else conv_sym(vwall);
- X! else conv_sym(hwall);
- X! else conv_sym(tlcorn);
- X! else conv_sym(trcorn);
- X! else conv_sym(blcorn);
- X! else conv_sym(brcorn);
- X! else conv_sym(crwall);
- X! else conv_sym(tuwall);
- X! else conv_sym(tdwall);
- X! else conv_sym(tlwall);
- X! else conv_sym(trwall);
- X! else conv_sym(door);
- X! else conv_sym(room);
- X! else conv_sym(corr);
- X! else conv_sym(upstair);
- X! else conv_sym(dnstair);
- X! else conv_sym(trap);
- X! else conv_sym(web);
- X! else conv_sym(pool);
- X! #ifdef FOUNTAINS
- X! else conv_sym(fountain);
- X! #endif
- X! #ifdef SINKS
- X! else conv_sym(sink);
- X! #endif
- X! #ifdef THRONES
- X! else conv_sym(throne);
- X! #endif
- X! #ifdef ALTARS
- X! else conv_sym(altar);
- X! #endif
- X! #ifdef STRONGHOLD
- X! else conv_sym(upladder);
- X! else conv_sym(dnladder);
- X! else conv_sym(dbvwall);
- X! else conv_sym(dbhwall);
- X! #endif
- X! #undef conv_sym
- X! else {
- X! q = r;
- X! if (index(quitchars, q)) {
- X! (void) fclose(fp); /* sweet@scubed */
- X! flags.verbose = oldverb;
- X! return 0;
- X! }
- X! }
- X
- X! if(q != '\t')
- X! while(fgets(buf,BUFSZ,fp))
- X! if(*buf == q) {
- X ep = index(buf, '\n');
- X if(ep) *ep = 0;
- X /* else: bad data file */
- X /* Expand tab 'by hand' */
- X! if(buf[1] == '\t'){
- X buf = bufr;
- X! buf[0] = r;
- X (void) strncpy(buf+1, " ", 7);
- X }
- X! /* use %s so '%' won't be interpreted as a format */
- X! pline("%s", buf);
- X! if(cc.x != -1) {
- X! register struct monst *mtmp;
- X
- X! if(MON_AT(cc.x,cc.y))
- X! mtmp = m_at(cc.x,cc.y);
- X! else
- X! mtmp = (struct monst *) 0;
- X! #ifdef ALTARS
- X! if (r == showsyms.altar && q == defsyms.altar &&
- X! (IS_ALTAR(levl[cc.x][cc.y].typ) ||
- X! (mtmp && mtmp->mimic))
- X! ) {
- X! int type = levl[cc.x][cc.y].altarmask &
- X! ~A_SHRINE;
- X! pline((type == A_CHAOS) ? "(chaotic)" :
- X! (type == A_NEUTRAL) ? "(neutral)" :
- X! "(lawful)");
- X! } else
- X! #endif
- X! if (q == CHAIN_SYM && OBJ_AT(cc.x, cc.y))
- X! pline("(chain)");
- X! else if (r == showsyms.door && q == defsyms.door &&
- X! (IS_DOOR(levl[cc.x][cc.y].typ) ||
- X! (mtmp && mtmp->mimic))) {
- X! /* Note: this will say mimics in walls are
- X! * closed doors, which we want.
- X! */
- X! switch(levl[cc.x][cc.y].doormask & ~D_TRAPPED) {
- X! case D_NODOOR: pline("(doorway)"); break;
- X! case D_BROKEN: pline("(broken door)"); break;
- X! case D_ISOPEN: pline("(open door)"); break;
- X! default: pline("(closed door)"); break;
- X! /* locked or not */
- X! }
- X! }
- X! #ifdef SPELLS
- X! else if (q == SPBOOK_SYM && OBJ_AT(cc.x, cc.y))
- X! pline("(spellbook)");
- X! #endif
- X! #ifdef STRONGHOLD
- X! else
- X! if (((r == showsyms.dbvwall && q == defsyms.dbvwall) ||
- X! (r == showsyms.dbvwall && q == defsyms.dbvwall)) &&
- X! is_db_wall(cc.x,cc.y))
- X! pline("(raised drawbridge)");
- X! #endif
- X! #ifdef SINKS
- X! else if (r == showsyms.sink && q == defsyms.sink &&
- X! IS_SINK(levl[cc.x][cc.y].typ))
- X! pline("(sink)");
- X! #endif
- X! if (!Invisible
- X #ifdef POLYSELF
- X && !u.uundetected
- X #endif
- X! && u.ux==cc.x && u.uy==cc.y) {
- X! pline("(%s named %s)",
- X #ifdef POLYSELF
- X! u.mtimedone ? mons[u.umonnum].mname :
- X #endif
- X! pl_character, plname);
- X! /* Note: the blind/telepathy check is necessary.
- X! * Otherwise a ghost sitting on a blank square
- X! * gets identified even while blind because the
- X! * symbol is "correct".
- X! */
- X! } else if (mtmp && (!Blind || Telepat)) {
- X! if (q == mtmp->data->mlet)
- X! pline("(%s%s)",
- X! mtmp->mtame ? "tame " :
- X! mtmp->mpeaceful ? "peaceful " : "",
- X! strncmp(lmonnam(mtmp), "the ", 4)
- X! ? lmonnam(mtmp) : lmonnam(mtmp)+4);
- X! }
- X! }
- X! if(ep[-1] == ';') {
- X! pline("More info? ");
- X! if(yn() == 'y') {
- X! page_more(fp,1); /* does fclose() */
- X! flags.verbose = oldverb;
- X! return 0;
- X! }
- X! }
- X! if(cc.x != -1) {
- X! buf = &bufr[6];
- X! more();
- X! rewind(fp);
- X! goto selobj;
- X }
- X! (void) fclose(fp); /* kopper@psuvax1 */
- X flags.verbose = oldverb;
- X return 0;
- X! }
- X! pline("I've never heard of such things.");
- X! (void) fclose(fp);
- X! flags.verbose = oldverb;
- X }
- X return 0;
- X }
- X
- X--- 75,264 ----
- X #else
- X fp = fopen(DATAFILE, "r");
- X #endif
- X! if(!fp) {
- X #ifdef MACOS
- X! fp = openFile(DATAFILE, "r");
- X! }
- X! if (!fp) {
- X #endif
- X pline("Cannot open data file!");
- X! return 0;
- X! }
- X
- X! pline ("Specify unknown object by cursor? ");
- X! q = ynq();
- X! if (q == 'q') {
- X! (void) fclose(fp);
- X! return 0;
- X! } else if (q == 'n') {
- X! cc.x = cc.y = -1;
- X! pline("Specify what? ");
- X! q = readchar();
- X! } else {
- X! cc.x = u.ux;
- X! cc.y = u.uy;
- X! selobj:
- X! found_in_file = FALSE;
- X! found = 0;
- X! (void) outspec("", 0); /* reset output */
- X! if(flags.verbose)
- X pline("Please move the cursor to an unknown object.");
- X! else
- X pline("Pick an object.");
- X! getpos(&cc, FALSE, "an unknown object");
- X! if (cc.x < 0) {
- X (void) fclose(fp); /* sweet@scubed */
- X flags.verbose = oldverb;
- X return 0;
- X }
- X+ flags.verbose = FALSE;
- X+ q = levl[cc.x][cc.y].scrsym;
- X+ if (!q || (!levl[cc.x][cc.y].seen && !MON_AT(cc.x,cc.y)))
- X+ q = ' ';
- X+ }
- X
- X! if (index(quitchars, (char)q)) {
- X! (void) fclose(fp); /* sweet@scubed */
- X! flags.verbose = oldverb;
- X! return 0;
- X! }
- X
- X! /* now check for symbols defined in the data file */
- X! if(q != '\t')
- X! while(fgets(buf,BUFSZ,fp)) {
- X! if(*buf == q) {
- X ep = index(buf, '\n');
- X if(ep) *ep = 0;
- X /* else: bad data file */
- X /* Expand tab 'by hand' */
- X! if (buf[1] == '\t') {
- X buf = bufr;
- X! buf[0] = q;
- X (void) strncpy(buf+1, " ", 7);
- X }
- X! pline("%s", buf); /* watch out for % in output */
- X! (void) outspec("", 0);
- X! found++;
- X! found_in_file = TRUE;
- X! break;
- X! }
- X! }
- X!
- X! /* Now check for graphics symbols */
- X! for (i = 0; i < MAXPCHARS; i++) {
- X! if ( q == showsyms[i] && (*explainsyms[i])) {
- X! if (!found) {
- X! pline("%c %s",q,explainsyms[i]);
- X! (void) outspec(explainsyms[i], 0);
- X! found++;
- X! }
- X! else if (outspec(explainsyms[i], 1))
- X! found++;
- X! }
- X! }
- X
- X! if (!found)
- X! pline("I've never heard of such things.");
- X!
- X! /* now check for specific things at a given location */
- X! if(cc.x != -1 && found) {
- X! if(MON_AT(cc.x,cc.y)) {
- X! mtmp = m_at(cc.x,cc.y);
- X! if (!showmon(mtmp) || Hallucination)
- X! mtmp = (struct monst *)0;
- X! } else
- X! mtmp = (struct monst *) 0;
- X! typ = levl[cc.x][cc.y].typ;
- X! if (!Invisible
- X #ifdef POLYSELF
- X && !u.uundetected
- X #endif
- X! && u.ux==cc.x && u.uy==cc.y) {
- X! pline("(%s named %s)",
- X #ifdef POLYSELF
- X! u.mtimedone ? mons[u.umonnum].mname :
- X #endif
- X! pl_character, plname);
- X! } else if (mtmp && !mtmp->mimic)
- X! pline("(%s%s)",
- X! mtmp->mtame ? "tame " :
- X! mtmp->mpeaceful ? "peaceful " : "",
- X! strncmp(lmonnam(mtmp), "the ", 4)
- X! ? lmonnam(mtmp) : lmonnam(mtmp)+4);
- X! /* Only worry about the rest of the cases if the symbol could represent
- X! more than one thing */
- X! else if (found <= 1)
- X! /* do nothing */ ;
- X! else if (!levl[cc.x][cc.y].seen)
- X! pline("(a dark part of a room)");
- X! #ifdef ALTARS
- X! else if (q == showsyms[S_altar] &&
- X! (IS_ALTAR(typ) || (mtmp && mtmp->mimic))) {
- X! int kind = levl[cc.x][cc.y].altarmask & ~A_SHRINE;
- X! pline( "(%s altar)",
- X! (kind == A_CHAOS) ? "chaotic" :
- X! (kind == A_NEUTRAL) ? "neutral" :
- X! "lawful" );
- X! }
- X! #endif
- X! else if ((q==showsyms[S_ndoor] ||
- X! q==showsyms[S_vodoor] ||
- X! q==showsyms[S_hodoor] ||
- X! q==showsyms[S_cdoor]) &&
- X! (IS_DOOR(typ) ||
- X! (IS_WALL(typ) && mtmp && mtmp->mimic))) {
- X! /* Note: this will say mimics in walls are
- X! * closed doors, which we want.
- X! */
- X! switch(levl[cc.x][cc.y].doormask & ~D_TRAPPED) {
- X! case D_NODOOR: pline("(doorway)"); break;
- X! case D_BROKEN: pline("(broken door)"); break;
- X! case D_ISOPEN: pline("(open door)"); break;
- X! default: pline("(closed door)"); break;
- X! /* locked or not */
- X }
- X! }
- X! #ifdef STRONGHOLD
- X! else if ((q == showsyms[S_dbvwall] ||
- X! q == showsyms[S_dbhwall]) &&
- X! is_db_wall(cc.x,cc.y))
- X! pline("(raised drawbridge)");
- X! #endif
- X! #ifdef SINKS
- X! else if (q == showsyms[S_sink] && IS_SINK(levl[cc.x][cc.y].typ))
- X! pline("(sink)");
- X! #endif
- X! else if (IS_ROOM(typ) && q == showsyms[S_room])
- X! pline("(floor of a room)");
- X! else if (q == showsyms[S_corr] && SPACE_POS(typ))
- X! pline("(corridor)");
- X! else if (!ACCESSIBLE(typ)) {
- X! if (q == showsyms[S_stone] || q == ' ')
- X! pline("(dark part of a room)");
- X! else
- X! pline("(wall)");
- X! }
- X! }
- X!
- X! /* now check for "more info" */
- X! if(found_in_file && ep[-1] == ';') {
- X! pline("More info? ");
- X! if(yn() == 'y') {
- X! page_more(fp,1); /* does fclose() */
- X flags.verbose = oldverb;
- X return 0;
- X! }
- X! }
- X!
- X! /* if specified by cursor, keep going */
- X! if(cc.x != -1) {
- X! buf = &bufr[6];
- X! more();
- X! rewind(fp);
- X! goto selobj;
- X }
- X+ (void) fclose(fp); /* kopper@psuvax1 */
- X+ flags.verbose = oldverb;
- X return 0;
- X }
- X
- X***************
- X*** 261,267 ****
- X #else
- X # ifdef MACOS
- X if(!(fp = fopen(CMDHELPFILE, "r")))
- X! fp = openFile(CMDHELPFILE);
- X if (!fp) {
- X # else
- X if(!(fp = fopen(CMDHELPFILE, "r"))) {
- X--- 278,284 ----
- X #else
- X # ifdef MACOS
- X if(!(fp = fopen(CMDHELPFILE, "r")))
- X! fp = openFile(CMDHELPFILE, "r");
- X if (!fp) {
- X # else
- X if(!(fp = fopen(CMDHELPFILE, "r"))) {
- X***************
- X*** 659,666 ****
- X--- 676,700 ----
- X * help menu, we end up restoring the part of the maze underneath the
- X * help menu when the last page of a long help file is displayed with
- X * an external pager.
- X+ *
- X+ * When whole_screen is FALSE and the internal pager is used, the
- X+ * screen is big enough so that the maze is left in place during paging
- X+ * and the paging occurs in the lower part of the screen. In this case
- X+ * the pager clears out the part it wrote over when it exits but it
- X+ * doesn't redraw the whole screen. So all characters require that
- X+ * the help menu be cleared.
- X+ *
- X+ * When an external pager is used, the screen is always cleared.
- X+ * However, the "f" and "h" help options always use the internal
- X+ * pager even if DEF_PAGER is defined.
- X+ * - Bob Wilber wilber@homxb.att.com 10/20/89
- X */
- X return(index(quitchars,c) || c == 'd' || c == 'e'
- X+ #ifdef DEF_PAGER
- X+ || (!whole_screen && (c == 'f' || c == 'h'))
- X+ #else
- X+ || !whole_screen
- X+ #endif
- X #ifdef WIZARD
- X || c == 'j'
- X #endif
- X***************
- X*** 763,769 ****
- X #else
- X # ifdef MACOS
- X if ((f = fopen (fnam, "r")) == (FILE *) 0)
- X! f = openFile(fnam);
- X /* refresh screen kluge */
- X if (!f) {
- X cls();
- X--- 797,803 ----
- X #else
- X # ifdef MACOS
- X if ((f = fopen (fnam, "r")) == (FILE *) 0)
- X! f = openFile(fnam, "r");
- X /* refresh screen kluge */
- X if (!f) {
- X cls();
- X*** src/Old/panic.c Sun Nov 19 13:04:49 1989
- X--- src/panic.c Fri Nov 17 19:32:04 1989
- X***************
- X*** 1,4 ****
- X! /* SCCS Id: @(#)panic.c 3.0 88/05/03
- X * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
- X *
- X * This code was adapted from the code in end.c to run in a standalone
- X--- 1,4 ----
- X! /* SCCS Id: @(#)panic.c 3.0 89/11/15
- X * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
- X *
- X * This code was adapted from the code in end.c to run in a standalone
- X***************
- X*** 12,18 ****
- X
- X #ifdef MSDOS
- X #undef exit
- X! extern void exit P((int));
- X #endif
- X #ifdef AZTEC
- X #define abort() exit()
- X--- 12,18 ----
- X
- X #ifdef MSDOS
- X #undef exit
- X! extern void FDECL(exit, (int));
- X #endif
- X #ifdef AZTEC
- X #define abort() exit()
- X***************
- X*** 44,47 ****
- X exit(1); /* redundant */
- X return;
- X }
- X-
- X--- 44,46 ----
- X*** src/Old/pickup.c Sun Nov 19 13:05:04 1989
- X--- src/pickup.c Tue Nov 14 21:24:39 1989
- X***************
- X*** 33,49 ****
- X dummygold.cobj = 0;
- X
- X if(Levitation) {
- X! if (all && !flags.pickup) read_engr_at(u.ux,u.uy);
- X return;
- X }
- X! if (all && !flags.pickup) {
- X int ct = 0;
- X
- X! for (obj = fobj; obj; obj = obj->nobj)
- X! if(obj->ox == u.ux && obj->oy == u.uy)
- X! if(!obj->cobj)
- X! if (obj != uchain)
- X! ct++;
- X
- X /* Stop on a zorkmid */
- X if (gold) ct++;
- X--- 33,47 ----
- X dummygold.cobj = 0;
- X
- X if(Levitation) {
- X! if (multi || (all && !flags.pickup)) read_engr_at(u.ux,u.uy);
- X return;
- X }
- X! if (multi || (all && !flags.pickup)) {
- X int ct = 0;
- X
- X! for (obj = level.objects[u.ux][u.uy]; obj; obj = obj->nexthere)
- X! if(!obj->cobj && obj != uchain)
- X! ct++;
- X
- X /* Stop on a zorkmid */
- X if (gold) ct++;
- X***************
- X*** 209,215 ****
- X if(obj->blessed) obj->blessed = 0;
- X else if(!obj->spe && !obj->cursed) obj->spe = 1;
- X else {
- X! pline("The scroll turns to dust as you pick it up.");
- X if(!(objects[SCR_SCARE_MONSTER].oc_name_known) &&
- X !(objects[SCR_SCARE_MONSTER].oc_uname))
- X docall(obj);
- X--- 207,215 ----
- X if(obj->blessed) obj->blessed = 0;
- X else if(!obj->spe && !obj->cursed) obj->spe = 1;
- X else {
- X! pline("The scroll%s turn%s to dust as you pick %s up.",
- X! plur((long)obj->quan), (obj->quan==1) ? "s":"",
- X! (obj->quan==1) ? "it" : "them");
- X if(!(objects[SCR_SCARE_MONSTER].oc_name_known) &&
- X !(objects[SCR_SCARE_MONSTER].oc_uname))
- X docall(obj);
- X***************
- X*** 310,319 ****
- X pline("You cannot reach the floor.");
- X return(0);
- X }
- X! if(OBJ_AT(u.ux, u.uy))
- X! for(cobj = fobj; cobj; cobj = cobj->nobj) {
- X!
- X! if(cobj->ox == u.ux && cobj->oy == u.uy)
- X if(Is_container(cobj)) {
- X
- X pline("There is %s here, loot it? ", doname(cobj));
- X--- 310,316 ----
- X pline("You cannot reach the floor.");
- X return(0);
- X }
- X! for(cobj = level.objects[u.ux][u.uy]; cobj; cobj = cobj->nexthere) {
- X if(Is_container(cobj)) {
- X
- X pline("There is %s here, loot it? ", doname(cobj));
- X***************
- X*** 355,365 ****
- X register struct obj *cobj, *obj;
- X {
- X if (cobj->otyp == BAG_OF_HOLDING)
- X! cobj->owt += (obj->owt/2 + 1);
- X else cobj->owt += obj->owt;
- X }
- X
- X! static int
- X in_container(obj)
- X register struct obj *obj;
- X {
- X--- 352,365 ----
- X register struct obj *cobj, *obj;
- X {
- X if (cobj->otyp == BAG_OF_HOLDING)
- X! cobj->owt += (obj->cursed?(obj->owt*2):(obj->owt/(obj->blessed?4:2)) + 1);
- X else cobj->owt += obj->owt;
- X }
- X
- X! #ifndef OVERLAY
- X! static
- X! #endif
- X! int
- X in_container(obj)
- X register struct obj *obj;
- X {
- X***************
- X*** 431,437 ****
- X return(1);
- X }
- X
- X! static int
- X ck_container(obj)
- X register struct obj *obj;
- X {
- X--- 431,440 ----
- X return(1);
- X }
- X
- X! #ifndef OVERLAY
- X! static
- X! #endif
- X! int
- X ck_container(obj)
- X register struct obj *obj;
- X {
- X***************
- X*** 438,450 ****
- X return(obj->cobj == current_container);
- X }
- X
- X! static int
- X ck_bag()
- X {
- X return(!baggone);
- X }
- X
- X! static int
- X out_container(obj)
- X register struct obj *obj;
- X {
- X--- 441,459 ----
- X return(obj->cobj == current_container);
- X }
- X
- X! #ifndef OVERLAY
- X! static
- X! #endif
- X! int
- X ck_bag()
- X {
- X return(!baggone);
- X }
- X
- X! #ifndef OVERLAY
- X! static
- X! #endif
- X! int
- X out_container(obj)
- X register struct obj *obj;
- X {
- X*** src/Old/polyself.c Sun Nov 19 13:05:28 1989
- X--- src/polyself.c Sun Nov 19 09:25:32 1989
- X***************
- X*** 1,4 ****
- X! /* SCCS Id: @(#)polyself.c 3.0 88/10/22
- X /* Polymorph self routine. Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X--- 1,4 ----
- X! /* SCCS Id: @(#)polyself.c 3.0 89/11/19
- X /* Polymorph self routine. Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X***************
- X*** 185,192 ****
- X if (mntmp < 0) {
- X tries = 0;
- X do {
- X! mntmp = rn2(PM_CHAMELEON);
- X! /* All valid monsters are from 0 to PM_CHAMELEON-1 */
- X } while(!polyok(&mons[mntmp]) && tries++ < 200);
- X }
- X
- X--- 185,192 ----
- X if (mntmp < 0) {
- X tries = 0;
- X do {
- X! mntmp = rn2(PM_ARCHEOLOGIST);
- X! /* All valid monsters are from 0 to PM_ARCHEOLOGIST-1 */
- X } while(!polyok(&mons[mntmp]) && tries++ < 200);
- X }
- X
- X***************
- X*** 234,242 ****
- X u.usym = mons[mntmp].mlet;
- X
- X if (tmp != mntmp)
- X! You("turn into a%s %s!",
- X! index(vowels, *(mons[mntmp].mname)) ? "n" : "",
- X! mons[mntmp].mname);
- X else
- X You("feel like a new %s!", mons[mntmp].mname);
- X
- X--- 234,240 ----
- X u.usym = mons[mntmp].mlet;
- X
- X if (tmp != mntmp)
- X! You("turn into %s!", an(mons[mntmp].mname));
- X else
- X You("feel like a new %s!", mons[mntmp].mname);
- X
- X***************
- X*** 300,305 ****
- X--- 298,305 ----
- X pline("Use the command #monster to summon help.");
- X if (webmaker(uasmon))
- X pline("Use the command #monster to spin a web.");
- X+ if (u.usym == S_UNICORN)
- X+ pline("Use the command #monster to use your horn.");
- X if (lays_eggs(uasmon) || u.umonnum == PM_QUEEN_BEE)
- X pline("Use the command #sit to lay an egg.");
- X find_ac();
- X***************
- X*** 366,372 ****
- X }
- X if (otmp = uarmf) {
- X Your("boots %s off your feet!",
- X! verysmall(uasmon) ? "slide" : "get pushed");
- X (void) Boots_off();
- X dropx(otmp);
- X }
- X--- 366,372 ----
- X }
- X if (otmp = uarmf) {
- X Your("boots %s off your feet!",
- X! verysmall(uasmon) ? "slide" : "are pushed");
- X (void) Boots_off();
- X dropx(otmp);
- X }
- X***************
- X*** 638,643 ****
- X--- 638,644 ----
- X
- X char *
- X body_part(part)
- X+ int part;
- X {
- X /* Note: it is assumed these will never be >22 characters long,
- X * plus the trailing null, after pluralizing (since sometimes a
- X***************
- X*** 669,675 ****
- X "minor current", "lower current", "swirl", "swirled",
- X "central core", "lower current", "addled", "center",
- X "edge" },
- X! *snake_parts[] = { "vestigal limb", "eye", "face", "large scale",
- X "large scale tip", "rear region", "scale gap", "scale gapped",
- X "head", "rear region", "light headed", "neck", "rear scale" };
- X
- X--- 670,676 ----
- X "minor current", "lower current", "swirl", "swirled",
- X "central core", "lower current", "addled", "center",
- X "edge" },
- X! *snake_parts[] = { "vestigial limb", "eye", "face", "large scale",
- X "large scale tip", "rear region", "scale gap", "scale gapped",
- X "head", "rear region", "light headed", "neck", "rear scale" };
- X
- X***************
- X*** 709,715 ****
- X */
- X #ifdef POLYSELF
- X if (uasmon->mflags1 & M1_FEM) return 1;
- X! #ifdef HARD
- X if (u.umonnum==PM_INCUBUS) return 0;
- X #endif
- X if (!humanoid(uasmon)) return 2;
- X--- 710,716 ----
- X */
- X #ifdef POLYSELF
- X if (uasmon->mflags1 & M1_FEM) return 1;
- X! #ifdef INFERNO
- X if (u.umonnum==PM_INCUBUS) return 0;
- X #endif
- X if (!humanoid(uasmon)) return 2;
- X***************
- X*** 721,727 ****
- X #ifdef GOLEMS
- X void
- X ugolemeffects(damtype, dam)
- X! int damtype;
- X {
- X int heal = 0;
- X /* We won't bother with "slow"/"haste" since players do not
- X--- 722,728 ----
- X #ifdef GOLEMS
- X void
- X ugolemeffects(damtype, dam)
- X! int damtype, dam;
- X {
- X int heal = 0;
- X /* We won't bother with "slow"/"haste" since players do not
- X*** src/Old/potion.c Sun Nov 19 13:05:59 1989
- X--- src/potion.c Sat Nov 18 21:17:43 1989
- X***************
- X*** 127,133 ****
- X if (!xtime && old ) {
- X if (!Blind && talk) pline("Everything looks SO boring now.");
- X for (mtmp=fmon; mtmp; mtmp=mtmp->nmon)
- X! if ((Blind && Telepat) || canseemon(mtmp))
- X atl(mtmp->mx, mtmp->my, (!mtmp->mappearance ||
- X Protection_from_shape_changers)
- X ? mtmp->data->mlet : mtmp->mappearance);
- X--- 127,133 ----
- X if (!xtime && old ) {
- X if (!Blind && talk) pline("Everything looks SO boring now.");
- X for (mtmp=fmon; mtmp; mtmp=mtmp->nmon)
- X! if (showmon(mtmp))
- X atl(mtmp->mx, mtmp->my, (!mtmp->mappearance ||
- X Protection_from_shape_changers)
- X ? mtmp->data->mlet : mtmp->mappearance);
- X***************
- X*** 182,188 ****
- X--- 182,190 ----
- X
- X otmp = getobj(beverages, "drink");
- X if(!otmp) return(0);
- X+ #ifndef NO_SIGNAL
- X otmp->in_use = TRUE; /* you've opened the stopper */
- X+ #endif
- X if(objects[otmp->otyp].oc_descr && !strcmp(objects[otmp->otyp].oc_descr, "smoky") && !rn2(13)) {
- X ghost_from_bottle();
- X useup(otmp);
- X***************
- X*** 259,267 ****
- X case POT_WATER:
- X if(!otmp->blessed && !otmp->cursed) {
- X pline("This tastes like %swater.",
- X! otmp->spe == -1 ? "impure " :
- X! !otmp->rustfree ? "" : "mineral "
- X! );
- X lesshungry(rnd(otmp->spe == -1 ? 3 : 10));
- X break;
- X }
- X--- 261,267 ----
- X case POT_WATER:
- X if(!otmp->blessed && !otmp->cursed) {
- X pline("This tastes like %swater.",
- X! otmp->spe == -1 ? "impure " : "");
- X lesshungry(rnd(otmp->spe == -1 ? 3 : 10));
- X break;
- X }
- X***************
- X*** 317,323 ****
- X unkn++;
- X You("have an uneasy feeling...");
- X } else {
- X! You("feel self-knowledgable...");
- X if (otmp->blessed) {
- X adjattrib(A_INT, 1, FALSE);
- X adjattrib(A_WIS, 1, FALSE);
- X--- 317,323 ----
- X unkn++;
- X You("have an uneasy feeling...");
- X } else {
- X! You("feel self-knowledgeable...");
- X if (otmp->blessed) {
- X adjattrib(A_INT, 1, FALSE);
- X adjattrib(A_WIS, 1, FALSE);
- X***************
- X*** 786,792 ****
- X /* note: no obfree() */
- X }
- X
- X! static int
- X neutralizes(o1, o2)
- X register struct obj *o1, *o2;
- X {
- X--- 786,792 ----
- X /* note: no obfree() */
- X }
- X
- X! static boolean
- X neutralizes(o1, o2)
- X register struct obj *o1, *o2;
- X {
- X***************
- X*** 797,813 ****
- X case POT_CONFUSION:
- X if (o2->otyp == POT_HEALING ||
- X o2->otyp == POT_EXTRA_HEALING)
- X! return 1;
- X case POT_HEALING:
- X case POT_EXTRA_HEALING:
- X if (o2->otyp == POT_SICKNESS ||
- X o2->otyp == POT_HALLUCINATION ||
- X o2->otyp == POT_BLINDNESS ||
- X o2->otyp == POT_CONFUSION)
- X! return 1;
- X }
- X
- X! return 0;
- X }
- X
- X int
- X--- 797,856 ----
- X case POT_CONFUSION:
- X if (o2->otyp == POT_HEALING ||
- X o2->otyp == POT_EXTRA_HEALING)
- X! return TRUE;
- X case POT_HEALING:
- X case POT_EXTRA_HEALING:
- X+ case UNICORN_HORN:
- X if (o2->otyp == POT_SICKNESS ||
- X o2->otyp == POT_HALLUCINATION ||
- X o2->otyp == POT_BLINDNESS ||
- X o2->otyp == POT_CONFUSION)
- X! return TRUE;
- X }
- X
- X! return FALSE;
- X! }
- X!
- X! boolean
- X! get_wet(obj)
- X! register struct obj *obj;
- X! /* returns TRUE if something happened (potion should be used up) */
- X! {
- X! switch (obj->olet) {
- X! case WEAPON_SYM:
- X! if (!obj->rustfree &&
- X! objects[obj->otyp].oc_material == METAL &&
- X! obj->spe > -6 && !rn2(10)) {
- X! Your("%s somewhat.", aobjnam(obj,"rust"));
- X! obj->spe--;
- X! return TRUE;
- X! } else break;
- X! case POTION_SYM:
- X! if (obj->otyp == POT_WATER) return FALSE;
- X! Your("%s.", aobjnam(obj,"dilute"));
- X! if (obj->spe == -1) {
- X! obj->spe = 0;
- X! obj->blessed = obj->cursed = 0;
- X! obj->otyp = POT_WATER;
- X! } else obj->spe--;
- X! return TRUE;
- X! case SCROLL_SYM:
- X! if (obj->otyp != SCR_BLANK_PAPER
- X! #ifdef MAIL
- X! && obj->otyp != SCR_MAIL
- X! #endif
- X! ) {
- X! if (!Blind) {
- X! if (obj->quan == 1)
- X! pline("The scroll fades.");
- X! else pline("The scrolls fade.");
- X! }
- X! obj->otyp = SCR_BLANK_PAPER;
- X! return TRUE;
- X! }
- X! }
- X! Your("%s wet.", aobjnam(obj,"get"));
- X! return FALSE;
- X }
- X
- X int
- X***************
- X*** 815,826 ****
- X {
- X register struct obj *potion, *obj;
- X char *tmp;
- X
- X if(!(obj = getobj("#", "dip")))
- X return(0);
- X #ifdef FOUNTAINS
- X /* Is there a fountain to dip into here? */
- X! if (IS_FOUNTAIN(levl[u.ux][u.uy].typ)) {
- X pline("Dip it into the fountain? ");
- X if(yn() == 'y') {
- X dipfountain(obj);
- X--- 858,872 ----
- X {
- X register struct obj *potion, *obj;
- X char *tmp;
- X+ uchar here;
- X
- X if(!(obj = getobj("#", "dip")))
- X return(0);
- X+
- X+ here = levl[u.ux][u.uy].typ;
- X #ifdef FOUNTAINS
- X /* Is there a fountain to dip into here? */
- X! if (IS_FOUNTAIN(here)) {
- X pline("Dip it into the fountain? ");
- X if(yn() == 'y') {
- X dipfountain(obj);
- X***************
- X*** 828,833 ****
- X--- 874,888 ----
- X }
- X }
- X #endif
- X+ if (is_pool(u.ux,u.uy)) {
- X+ pline("Dip it into the %s? ",
- X+ here == POOL ? "pool" : "moat");
- X+ if(yn() == 'y') {
- X+ (void) get_wet(obj);
- X+ return(1);
- X+ }
- X+ }
- X+
- X if(!(potion = getobj(beverages, "dip into")))
- X return(0);
- X if (potion==obj && potion->quan==1) {
- X***************
- X*** 879,914 ****
- X obj->bknown=1;
- X goto poof;
- X }
- X! } else if (obj->otyp != POT_WATER) {
- X! if (obj->olet == WEAPON_SYM && !obj->rustfree &&
- X! objects[obj->otyp].oc_material == METAL &&
- X! obj->spe > -6 && !rn2(10)) {
- X! Your("%s somewhat.", aobjnam(obj,"rust"));
- X! obj->spe--;
- X! goto poof;
- X! } else if (obj->olet == POTION_SYM) {
- X! Your("%s.", aobjnam(obj,"dilute"));
- X! if (obj->spe == -1) {
- X! obj->spe = 0;
- X! obj->blessed = obj->cursed = 0;
- X! obj->otyp = POT_WATER;
- X! } else obj->spe--;
- X! goto poof;
- X! } else if (obj->olet == SCROLL_SYM &&
- X! #ifdef MAIL
- X! obj->otyp != SCR_MAIL &&
- X! #endif
- X! obj->otyp != SCR_BLANK_PAPER) {
- X! if (!Blind) {
- X! if (obj->quan == 1)
- X! pline("The scroll fades.");
- X! else pline("The scrolls fade.");
- X! }
- X! obj->otyp = SCR_BLANK_PAPER;
- X! goto poof;
- X! } else
- X! Your("%s wet.", aobjnam(obj,"get"));
- X! }
- X }
- X else if(obj->olet == POTION_SYM && obj->otyp != potion->otyp) {
- X /* Mixing potions is dangerous... */
- X--- 934,942 ----
- X obj->bknown=1;
- X goto poof;
- X }
- X! } else
- X! if (get_wet(obj))
- X! goto poof;
- X }
- X else if(obj->olet == POTION_SYM && obj->otyp != potion->otyp) {
- X /* Mixing potions is dangerous... */
- X***************
- X*** 926,933 ****
- X obj->blessed = obj->cursed = obj->bknown = 0;
- X if (Blind) obj->dknown = 0;
- X
- X! switch (neutralizes(obj, potion) || obj->spe == -1 ?
- X! 1 : rnd(8)) {
- X case 1:
- X obj->otyp = POT_WATER;
- X obj->blessed = obj->cursed = 0;
- X--- 954,961 ----
- X obj->blessed = obj->cursed = obj->bknown = 0;
- X if (Blind) obj->dknown = 0;
- X
- X! switch (neutralizes(obj, potion) ||
- X! obj->spe == -1 /* diluted */ ? 1 : rnd(8)) {
- X case 1:
- X obj->otyp = POT_WATER;
- X obj->blessed = obj->cursed = 0;
- X***************
- X*** 982,987 ****
- X--- 1010,1023 ----
- X goto poof;
- X }
- X }
- X+
- X+ if(obj->otyp == UNICORN_HORN && neutralizes(obj, potion)) {
- X+ pline("The potion clears.");
- X+ potion->otyp = POT_WATER;
- X+ potion->blessed = potion->cursed = 0;
- X+ return(1);
- X+ }
- X+
- X pline("Interesting...");
- X return(1);
- X }
- X*** src/Old/pray.c Sun Nov 19 13:06:43 1989
- X--- src/pray.c Sat Nov 11 16:11:29 1989
- X***************
- X*** 184,192 ****
- X break;
- X case TROUBLE_HIT:
- X if (!Blind) {
- X! const char *tmp = Hallucination ? hcolor() : golden;
- X! pline("A%s %s glow surrounds you.",
- X! index(vowels,*tmp) ? "n" : "", tmp);
- X } else You("feel much better.");
- X u.uhp = u.uhpmax += 5;
- X flags.botl = 1;
- X--- 184,191 ----
- X break;
- X case TROUBLE_HIT:
- X if (!Blind) {
- X! pline("%s glow surrounds you.",
- X! An(Hallucination ? hcolor() : golden));
- X } else You("feel much better.");
- X u.uhp = u.uhpmax += 5;
- X flags.botl = 1;
- X***************
- X*** 312,319 ****
- X
- X case 0:
- X case 1: if (Hallucination)
- X! You("feel %sholy dread.",
- X! u.ualigntyp == U_CHAOTIC ? "an un" : "a ");
- X else You("feel that %s is %s.",
- X # ifdef ALTARS
- X on_altar() ? a_gname() : u_gname(),
- X--- 311,318 ----
- X
- X case 0:
- X case 1: if (Hallucination)
- X! You("feel a%sholy dread.",
- X! u.ualigntyp == U_CHAOTIC ? "n un" : " ");
- X else You("feel that %s is %s.",
- X # ifdef ALTARS
- X on_altar() ? a_gname() : u_gname(),
- X***************
- X*** 350,360 ****
- X break;
- X } /* else fall thru */
- X case 4:
- X! case 5: if (!Blind) {
- X! const char *temp = Hallucination ? hcolor() : black;
- X! pline("A%s %s glow surrounds you.",
- X! index(vowels,*temp) ? "n" : "", temp);
- X! }
- X rndcurse();
- X break;
- X case 7:
- X--- 349,357 ----
- X break;
- X } /* else fall thru */
- X case 4:
- X! case 5: if (!Blind)
- X! pline("%s glow surrounds you.",
- X! An(Hallucination ? hcolor() : black));
- X rndcurse();
- X break;
- X case 7:
- X***************
- X*** 407,413 ****
- X
- X static void
- X pleased() {
- X- char *tmp;
- X int trouble = in_trouble (); /* what's your worst difficulty? */
- X int pat_on_head = 0;
- X
- X--- 404,409 ----
- X***************
- X*** 481,490 ****
- X } else if(uwep->otyp < BOW) {
- X uwep->blessed = uwep->bknown = 1;
- X if (!Blind) {
- X! tmp = Hallucination ? hcolor() : light_blue;
- X! Your("%s with a%s %s aura.",
- X aobjnam(uwep, "softly glow"),
- X! index(vowels,*tmp) ? "n" : "", tmp);
- X }
- X }
- X }
- X--- 477,485 ----
- X } else if(uwep->otyp < BOW) {
- X uwep->blessed = uwep->bknown = 1;
- X if (!Blind) {
- X! Your("%s with %s aura.",
- X aobjnam(uwep, "softly glow"),
- X! an(Hallucination ? hcolor() : light_blue));
- X }
- X }
- X }
- X***************
- X*** 507,517 ****
- X }
- X /* Otherwise, falls into next case */
- X #endif
- X! case 2: if (!Blind) {
- X! tmp = Hallucination ? hcolor() : golden;
- X! You("are surrounded by a%s %s glow.",
- X! index(vowels,*tmp) ? "n" : "", tmp);
- X! }
- X u.uhp = u.uhpmax += 5;
- X ABASE(A_STR) = AMAX(A_STR);
- X if (u.uhunger < 900) init_uhunger();
- X--- 502,510 ----
- X }
- X /* Otherwise, falls into next case */
- X #endif
- X! case 2: if (!Blind)
- X! You("are surrounded by %s glow.",
- X! an(Hallucination ? hcolor() : golden));
- X u.uhp = u.uhpmax += 5;
- X ABASE(A_STR) = AMAX(A_STR);
- X if (u.uhunger < 900) init_uhunger();
- X***************
- X*** 522,532 ****
- X case 4:
- X { register struct obj *otmp;
- X
- X- tmp = Hallucination ? hcolor() : light_blue;
- X if (Blind)
- X You("feel the power of %s.", u_gname());
- X! else You("are surrounded by a%s %s aura.",
- X! index(vowels,*tmp) ? "n" : "", tmp);
- X for(otmp=invent; otmp; otmp=otmp->nobj) {
- X if (otmp->cursed) {
- X otmp->cursed = 0;
- X--- 515,524 ----
- X case 4:
- X { register struct obj *otmp;
- X
- X if (Blind)
- X You("feel the power of %s.", u_gname());
- X! else You("are surrounded by %s aura.",
- X! an(Hallucination ? hcolor() : light_blue));
- X for(otmp=invent; otmp; otmp=otmp->nobj) {
- X if (otmp->cursed) {
- X otmp->cursed = 0;
- X***************
- X*** 598,605 ****
- X pline("Something appears at your %s.",
- X makeplural(body_part(FOOT)));
- X else
- X! pline("A %s sword appears at your %s!",
- X! Hallucination ? hcolor() : "black",
- X makeplural(body_part(FOOT)));
- X obj = mksobj(BROADSWORD, FALSE);
- X obj = oname(obj, "Stormbringer", 0);
- X--- 590,597 ----
- X pline("Something appears at your %s.",
- X makeplural(body_part(FOOT)));
- X else
- X! pline("%s sword appears at your %s!",
- X! An(Hallucination ? hcolor() : black),
- X makeplural(body_part(FOOT)));
- X obj = mksobj(BROADSWORD, FALSE);
- X obj = oname(obj, "Stormbringer", 0);
- X***************
- X*** 678,684 ****
- X pline("Your sacrifice disappears!");
- X else pline ("Your sacrifice is consumed in a %s!",
- X u.ualigntyp == U_LAWFUL ? "flash of light" : "burst of flame");
- X! useup(otmp);
- X }
- X
- X int
- X--- 670,677 ----
- X pline("Your sacrifice disappears!");
- X else pline ("Your sacrifice is consumed in a %s!",
- X u.ualigntyp == U_LAWFUL ? "flash of light" : "burst of flame");
- X! if (carried(otmp)) useup(otmp);
- X! else useupf(otmp);
- X }
- X
- X int
- X***************
- X*** 713,719 ****
- X a pet corpse was tame, so you can still sacrifice it.)
- X */
- X
- X! #define MAXVALUE 33 /* Highest corpse value (approx.) */
- X
- X if (otmp->otyp == CORPSE) {
- X register struct permonst *mtmp = &mons[otmp->corpsenm];
- X--- 706,712 ----
- X a pet corpse was tame, so you can still sacrifice it.)
- X */
- X
- X! #define MAXVALUE 24 /* Highest corpse value (besides Wiz) */
- X
- X if (otmp->otyp == CORPSE) {
- X register struct permonst *mtmp = &mons[otmp->corpsenm];
- X***************
- X*** 722,729 ****
- X if (otmp->corpsenm == PM_ACID_BLOB || (monstermoves <= otmp->age + 50))
- X value = monstr[otmp->corpsenm] + 1;
- X if (otmp->oeaten)
- X! value =
- X! value * otmp->owt / mons[otmp->corpsenm].cwt / otmp->quan;
- X
- X if (is_human(mtmp)) { /* Human sacrifice! */
- X #ifdef POLYSELF
- X--- 715,721 ----
- X if (otmp->corpsenm == PM_ACID_BLOB || (monstermoves <= otmp->age + 50))
- X value = monstr[otmp->corpsenm] + 1;
- X if (otmp->oeaten)
- X! value = eaten_stat(value, otmp);
- X
- X if (is_human(mtmp)) { /* Human sacrifice! */
- X #ifdef POLYSELF
- X***************
- X*** 741,747 ****
- X angry_priest();
- X } else {
- X register struct monst *dmon;
- X- const char *color = Hallucination ? hcolor() : black;
- X /* Human sacrifice on a chaotic altar is equivalent to demon summoning */
- X #ifdef THEOLOGY
- X if (levl[u.ux][u.uy].altarmask & A_SHRINE)
- X--- 733,738 ----
- X***************
- X*** 748,756 ****
- X pline("The blood covers the altar!");
- X else {
- X #endif
- X! pline("The blood floods over the altar, which vanishes in a%s %s cloud!",
- X! index(vowels, *color) ? "n" : "", color);
- X levl[u.ux][u.uy].typ = ROOM;
- X #ifdef THEOLOGY
- X }
- X #endif
- X--- 739,748 ----
- X pline("The blood covers the altar!");
- X else {
- X #endif
- X! pline("The blood floods over the altar, which vanishes in %s cloud!",
- X! an(Hallucination ? hcolor() : black));
- X levl[u.ux][u.uy].typ = ROOM;
- X+ levl[u.ux][u.uy].altarmask = 0;
- X #ifdef THEOLOGY
- X }
- X #endif
- X***************
- X*** 772,778 ****
- X if (!Inhell) angrygods();
- X change_luck(-5);
- X } else adjalign(5);
- X! useup(otmp);
- X return(1);
- X } else if (is_undead(mtmp)) { /* Not demons--no demon corpses */
- X if (u.ualigntyp != U_CHAOTIC)
- X--- 764,771 ----
- X if (!Inhell) angrygods();
- X change_luck(-5);
- X } else adjalign(5);
- X! if (carried(otmp)) useup(otmp);
- X! else useupf(otmp);
- X return(1);
- X } else if (is_undead(mtmp)) { /* Not demons--no demon corpses */
- X if (u.ualigntyp != U_CHAOTIC)
- X***************
- X*** 828,834 ****
- X else {
- X /* The final Test. Did you win? */
- X if(uamul == otmp) Amulet_off();
- X! useup(otmp); /* well, it's gone now */
- X You("offer the Amulet to %s...", a_gname());
- X if (u.ualigntyp !=
- X (levl[u.ux][u.uy].altarmask & ~A_SHRINE) - 1) {
- X--- 821,828 ----
- X else {
- X /* The final Test. Did you win? */
- X if(uamul == otmp) Amulet_off();
- X! if(carried(otmp)) useup(otmp); /* well, it's gone now */
- X! else useupf(otmp);
- X You("offer the Amulet to %s...", a_gname());
- X if (u.ualigntyp !=
- X (levl[u.ux][u.uy].altarmask & ~A_SHRINE) - 1) {
- X***************
- X*** 1094,1099 ****
- X--- 1088,1106 ----
- X
- X if((pl_character[0] != 'P') &&
- X (pl_character[0] != 'K')) {
- X+ #ifdef SPELLS
- X+ /* Try to use turn undead spell. */
- X+ if (objects[SPE_TURN_UNDEAD].oc_name_known) {
- X+ register int sp_no;
- X+ for (sp_no = 0; sp_no < MAXSPELL &&
- X+ spl_book[sp_no].sp_id != NO_SPELL &&
- X+ spl_book[sp_no].sp_id != SPE_TURN_UNDEAD; sp_no++);
- X+
- X+ if (sp_no < MAXSPELL &&
- X+ spl_book[sp_no].sp_id == SPE_TURN_UNDEAD)
- X+ return spelleffects(++sp_no, TRUE);
- X+ }
- X+ #endif
- X
- X You("don't know how to turn undead!");
- X return(0);
- X*** src/Old/pri.c Sun Nov 19 13:07:30 1989
- X--- src/pri.c Fri Nov 17 20:44:47 1989
- X***************
- X*** 1,4 ****
- X! /* SCCS Id: @(#)pri.c 3.0 89/06/16
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X--- 1,4 ----
- X! /* SCCS Id: @(#)pri.c 3.0 89/11/15
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X***************
- X*** 9,31 ****
- X #if defined(ALTARS) && defined(THEOLOGY)
- X #include "epri.h"
- X #endif
- X
- X! static void hilite P((int,int,UCHAR_P, UCHAR_P));
- X! static void cornbot P((int));
- X! static boolean ismnst P((CHAR_P));
- X #ifdef TEXTCOLOR
- X! static uchar mimic_color P((UCHAR_P));
- X #endif
- X
- X! #if defined(MSDOS) && !defined(TERMLIB) && !defined(DECRAINBOW)
- X! # define g_putch (void) putchar
- X! #endif
- X!
- X! /* This is the same logic used for "#define IBMXASCII" in file "termcap.c" */
- X! #if !defined(AMIGA)
- X! # if defined(TERMLIB) || !(defined(DECRAINBOW) || defined(OS2))
- X! # define g_putch (void) putchar
- X! # endif
- X #endif
- X
- X #ifndef g_putch
- X--- 9,25 ----
- X #if defined(ALTARS) && defined(THEOLOGY)
- X #include "epri.h"
- X #endif
- X+ #include "termcap.h"
- X
- X! static void FDECL(hilite, (int,int,UCHAR_P, UCHAR_P));
- X! static void FDECL(cornbot, (int));
- X! static boolean FDECL(ismnst, (CHAR_P));
- X #ifdef TEXTCOLOR
- X! static uchar FDECL(mimic_color, (UCHAR_P));
- X #endif
- X
- X! #ifndef ASCIIGRAPH
- X! # define g_putch (void) putchar
- X #endif
- X
- X #ifndef g_putch
- X***************
- X*** 39,44 ****
- X--- 33,42 ----
- X static const char *dispst = "*0#@#0#*0#@#0#*0#@#0#*0#@#0#*0#@#0#*";
- X static int mrank_sz = 0; /* loaded by max_rank_sz (called in u_init) */
- X
- X+ #ifdef CLIPPING
- X+ #define curs(x, y) win_curs((x), (y)-2)
- X+ #endif
- X+
- X void
- X swallowed(first)
- X register int first;
- X***************
- X*** 90,102 ****
- X--- 88,144 ----
- X u.udisx = u.ux;
- X u.udisy = u.uy;
- X }
- X+ #ifdef CLIPPING
- X+ #undef curs
- X+ #endif
- X
- X void
- X setclipped()
- X {
- X+ #ifndef CLIPPING
- X error("NetHack needs a screen of size at least %d by %d.\n",
- X ROWNO+3, COLNO);
- X+ #else
- X+ clipping = TRUE;
- X+ clipx = clipy = 0;
- X+ clipxmax = CO;
- X+ clipymax = LI - 3;
- X+ #endif
- X+ }
- X+
- X+ #ifdef CLIPPING
- X+ void
- X+ cliparound(x, y)
- X+ int x, y;
- X+ {
- X+ int oldx = clipx, oldy = clipy;
- X+
- X+ if (!clipping) return;
- X+ if (x < clipx + 5) {
- X+ clipx = max(0, x - 20);
- X+ clipxmax = clipx + CO;
- X+ }
- X+ else if (x > clipxmax - 5) {
- X+ clipxmax = min(COLNO, clipxmax + 20);
- X+ clipx = clipxmax - CO;
- X+ }
- X+ if (y < clipy + 2) {
- X+ clipy = max(0, y - 10);
- X+ clipymax = clipy + (LI - 3);
- X+ }
- X+ else if (y > clipymax - 2) {
- X+ clipymax = min(ROWNO, clipymax + 10);
- X+ clipy = clipxmax - (LI - 3);
- X+ }
- X+ if (clipx != oldx || clipy != oldy) {
- X+ if (u.udispl) {
- X+ u.udispl = 0;
- X+ levl[u.udisx][u.udisy].scrsym = news0(u.udisx, u.udisy);
- X+ }
- X+ doredraw();
- X+ }
- X }
- X+ #endif /* CLIPPING */
- X
- X /*
- X * Allow for a different implementation than this...
- X***************
- X*** 108,114 ****
- X g_putch(ch)
- X uchar ch;
- X {
- X! if (ch & 0x80) {
- X if (!GFlag) {
- X graph_on();
- X GFlag = TRUE;
- X--- 150,158 ----
- X g_putch(ch)
- X uchar ch;
- X {
- X! if (IBMgraphics) /* IBM-compatible displays don't need other stuff */
- X! (void) putchar(ch);
- X! else if (ch & 0x80) {
- X if (!GFlag) {
- X graph_on();
- X GFlag = TRUE;
- X***************
- X*** 125,131 ****
- X
- X #endif
- X
- X! static boolean
- X showmon(mon)
- X register struct monst *mon;
- X {
- X--- 169,175 ----
- X
- X #endif
- X
- X! boolean
- X showmon(mon)
- X register struct monst *mon;
- X {
- X***************
- X*** 168,178 ****
- X (!OBJ_AT(x, y) && !levl[x][y].gmask || is_pool(x,y)))
- X typ = AT_MAP;
- X
- X! y += 2;
- X! curs(x,y);
- X!
- X! hilite(x, y-2, ch, typ);
- X curx++;
- X }
- X
- X void
- X--- 212,227 ----
- X (!OBJ_AT(x, y) && !levl[x][y].gmask || is_pool(x,y)))
- X typ = AT_MAP;
- X
- X! #ifdef CLIPPING
- X! if (win_curs(x, y)) {
- X! #else
- X! curs(x,y+2);
- X! #endif
- X! hilite(x, y, ch, typ);
- X curx++;
- X+ #ifdef CLIPPING
- X+ }
- X+ #endif
- X }
- X
- X void
- X***************
- X*** 269,275 ****
- X mtmp->mdispl = 0;
- X seemons(); /* force new positions to be shown */
- X
- X! #if (defined(DGK) && !defined(TEXTCOLOR)) || defined(MACOS)
- X # ifdef MACOS
- X t = (term_info *)GetWRefCon(HackWindow);
- X if (!t->inColor)
- X--- 318,324 ----
- X mtmp->mdispl = 0;
- X seemons(); /* force new positions to be shown */
- X
- X! #if ((defined(DGK) && !defined(TEXTCOLOR)) || defined(MACOS)) & !defined(CLIPPING)
- X # ifdef MACOS
- X t = (term_info *)GetWRefCon(HackWindow);
- X if (!t->inColor)
- X***************
- X*** 328,334 ****
- X at(x,y,room->scrsym,AT_APP);
- X } else if(room->seen)
- X at(x,y,room->scrsym,AT_APP);
- X! #endif /* DGK && !TEXTCOLOR */
- X #ifndef g_putch
- X if (GFlag) {
- X graph_off();
- X--- 377,383 ----
- X at(x,y,room->scrsym,AT_APP);
- X } else if(room->seen)
- X at(x,y,room->scrsym,AT_APP);
- X! #endif /* DGK && !TEXTCOLOR && !CLIPPING */
- X #ifndef g_putch
- X if (GFlag) {
- X graph_off();
- X***************
- X*** 364,369 ****
- X--- 413,421 ----
- X return;
- X }
- X
- X+ #ifdef CLIPPING
- X+ xmin += clipx; ymax += clipy;
- X+ #endif
- X seemons(); /* reset old positions */
- X for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
- X if(mtmp->mx >= xmin && mtmp->my < ymax)
- X***************
- X*** 370,378 ****
- X--- 422,436 ----
- X mtmp->mdispl = 0;
- X seemons(); /* force new positions to be shown */
- X
- X+ #ifdef CLIPPING
- X+ for(y = clipy; y < ymax; y++) {
- X+ if(clipping && y > clipymax && CD) break;
- X+ curs(xmin - clipx, (y - clipy)+2);
- X+ #else
- X for(y = 0; y < ymax; y++) {
- X if(y > ROWNO+1 && CD) break;
- X curs(xmin,y+2);
- X+ #endif
- X cl_end();
- X if(y < ROWNO) {
- X for(x = xmin; x < COLNO; x++) {
- X***************
- X*** 444,451 ****
- X struct monst *mtmp = revive(obj, FALSE);
- X
- X if (mtmp && visible)
- X! pline("%s rises from the dead!", Monnam(mtmp));
- X! } else if (obj->age + 250 < monstermoves) delobj(obj);
- X }
- X }
- X
- X--- 502,513 ----
- X struct monst *mtmp = revive(obj, FALSE);
- X
- X if (mtmp && visible)
- X! pline("%s rises from the dead!",
- X! (mtmp->mhp==mtmp->mhpmax) ? Monnam(mtmp)
- X! : Amonnam(mtmp, "bite-covered"));
- X! } else if (obj->corpsenm != PM_LIZARD &&
- X! obj->age + 250 < monstermoves)
- X! delobj(obj);
- X }
- X }
- X
- X***************
- X*** 458,468 ****
- X struct monst *mtmp = revive(obj, TRUE);
- X
- X if (mtmp && wielded)
- X! pline("The %s %s writhes out of your grasp!",
- X mtmp->data->mname, xname(obj));
- X else if (mtmp)
- X You("feel squirming in your backpack!");
- X! } else if (obj->age + 250 < monstermoves) useup(obj);
- X }
- X }
- X }
- X--- 520,533 ----
- X struct monst *mtmp = revive(obj, TRUE);
- X
- X if (mtmp && wielded)
- X! pline("The %s%s %s writhes out of your grasp!",
- X! (mtmp->mhp < mtmp->mhpmax) ? "bite-covered ":"",
- X mtmp->data->mname, xname(obj));
- X else if (mtmp)
- X You("feel squirming in your backpack!");
- X! } else if (obj->corpsenm != PM_LIZARD &&
- X! obj->age + 250 < monstermoves)
- X! useup(obj);
- X }
- X }
- X }
- X***************
- X*** 499,506 ****
- X if (Hallucination)
- X atl(mon->mx,mon->my,
- X (char) ((!mon->mimic || Protection_from_shape_changers) ?
- X! rndmonsym() : (mon->mappearance == DOOR_SYM) ?
- X! DOOR_SYM : rndobjsym()));
- X else
- X
- X atl(mon->mx,mon->my,
- X--- 564,571 ----
- X if (Hallucination)
- X atl(mon->mx,mon->my,
- X (char) ((!mon->mimic || Protection_from_shape_changers) ?
- X! rndmonsym() : (mon->mappearance == CLOSED_DOOR_SYM) ?
- X! CLOSED_DOOR_SYM : rndobjsym()));
- X else
- X
- X atl(mon->mx,mon->my,
- X***************
- X*** 879,885 ****
- X--- 944,954 ----
- X register char *bp0 = newbot, *bp1 = newbot;
- X
- X do {
- X+ #ifdef CLIPPING
- X+ if(*bp0 != ' ' || bp0[1] != ' ')
- X+ #else
- X if(*bp0 != ' ' || bp0[1] != ' ' || bp0[2] != ' ')
- X+ #endif
- X *bp1++ = *bp0;
- X } while(*bp0++);
- X }
- X***************
- X*** 910,915 ****
- X--- 979,987 ----
- X {
- X register int i,j;
- X
- X+ #ifdef CLIPPING
- X+ if (CO > 59) {
- X+ #endif
- X Strcpy(newbot1, plname);
- X if('a' <= newbot1[0] && newbot1[0] <= 'z') newbot1[0] += 'A'-'a';
- X newbot1[10] = 0;
- X***************
- X*** 939,944 ****
- X--- 1011,1021 ----
- X do { Sprintf(eos(newbot1)," "); /* pad with spaces */
- X i--;
- X } while((i - j) > 0);
- X+ #ifdef CLIPPING
- X+ }
- X+ else
- X+ *newbot1 = 0;
- X+ #endif
- X if(ACURR(A_STR)>18) {
- X if(ACURR(A_STR)>118)
- X Sprintf(eos(newbot1),"St:%2d ",ACURR(A_STR)-100);
- X***************
- X*** 959,965 ****
- X--- 1036,1046 ----
- X + u.urexp + (50 * maxdlevel)
- X + (maxdlevel > 20? 1000*((maxdlevel > 30) ? 10 : maxdlevel - 20) :0));
- X #endif
- X+ #ifdef CLIPPING
- X+ fillbot(min(LI-1, ROWNO+2), oldbot1, newbot1);
- X+ #else
- X fillbot(ROWNO+2, oldbot1, newbot1);
- X+ #endif
- X }
- X
- X static void
- X***************
- X*** 1016,1022 ****
- X--- 1097,1107 ----
- X if(Blinded) Sprintf(eos(newbot2), " Blind");
- X if(Stunned) Sprintf(eos(newbot2), " Stun");
- X if(Hallucination) Sprintf(eos(newbot2), " Hallu");
- X+ #ifdef CLIPPING
- X+ fillbot(min(LI, ROWNO+3), oldbot2, newbot2);
- X+ #else
- X fillbot(ROWNO+3, oldbot2, newbot2);
- X+ #endif
- X }
- X
- X void
- X***************
- X*** 1130,1136 ****
- X int x, y;
- X uchar let, typ;
- X {
- X-
- X if (let == ' '
- X #if !defined(MSDOS) && !defined(MACOS)
- X || !flags.standout
- X--- 1215,1220 ----
- X***************
- X*** 1164,1181 ****
- X default:
- X if (u.ux == x && u.uy == y)
- X typ = uasmon->mcolor;
- X! else
- X typ = level.monsters[x][y]->data->mcolor;
- X }
- X! break;
- X case AT_OBJ:
- X if (let == GOLD_SYM)
- X typ = HI_GOLD;
- X! else if (level.objects[x][y] &&
- X! let == objects[level.objects[x][y]->otyp].oc_olet)
- X! typ = objects[level.objects[x][y]->otyp].oc_color;
- X else
- X typ = mimic_color(let);
- X break;
- X case AT_MAP:
- X if ( ((let == POOL_SYM && IS_POOL(levl[x][y].typ))
- X--- 1248,1275 ----
- X default:
- X if (u.ux == x && u.uy == y)
- X typ = uasmon->mcolor;
- X! else if (level.monsters[x][y])
- X typ = level.monsters[x][y]->data->mcolor;
- X+ else
- X+ typ = 0;
- X }
- X! break;
- X case AT_OBJ:
- X+ { struct obj *otmp;
- X+
- X if (let == GOLD_SYM)
- X typ = HI_GOLD;
- X! else if ((otmp = level.objects[x][y]) &&
- X! let == objects[otmp->otyp].oc_olet) {
- X! if (otmp->otyp == CORPSE ||
- X! otmp->otyp == DRAGON_SCALE_MAIL)
- X! typ = mons[otmp->corpsenm].mcolor;
- X! else
- X! typ = objects[level.objects[x][y]->otyp].oc_color;
- X! }
- X else
- X typ = mimic_color(let);
- X+ }
- X break;
- X case AT_MAP:
- X if ( ((let == POOL_SYM && IS_POOL(levl[x][y].typ))
- X***************
- X*** 1190,1195 ****
- X--- 1284,1292 ----
- X && hilites[HI_GOLD] != HI)
- X typ = HI_GOLD;
- X #endif
- X+ else if (levl[x][y].typ == ROOM && levl[x][y].icedpool
- X+ && hilites[CYAN] != HI)
- X+ typ = CYAN;
- X else
- X typ = 0;
- X break;
- X*** src/Old/priest.c Sun Nov 19 13:08:13 1989
- X--- src/priest.c Wed Nov 8 22:56:57 1989
- X***************
- X*** 147,153 ****
- X gy += rn1(3,-1);
- X
- X if(!priest->mpeaceful) {
- X! if(dist(omx,omy) < 3) {
- X if(Displaced)
- X Your("displaced image doesn't fool %s!",
- X mon_nam(priest));
- X--- 147,153 ----
- X gy += rn1(3,-1);
- X
- X if(!priest->mpeaceful) {
- X! if(monnear(priest, u.ux, u.uy)) {
- X if(Displaced)
- X Your("displaced image doesn't fool %s!",
- X mon_nam(priest));
- X*** src/Old/prisym.c Sun Nov 19 13:08:35 1989
- X--- src/prisym.c Fri Nov 17 19:32:10 1989
- X***************
- X*** 1,4 ****
- X! /* SCCS Id: @(#)prisym.c 3.0 88/11/09
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X--- 1,4 ----
- X! /* SCCS Id: @(#)prisym.c 3.0 89/11/15
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X***************
- X*** 8,14 ****
- X #include "wseg.h"
- X #include "lev.h"
- X
- X! static void pwseg P((struct wseg *));
- X #endif
- X
- X void
- X--- 8,14 ----
- X #include "wseg.h"
- X #include "lev.h"
- X
- X! static void FDECL(pwseg, (struct wseg *));
- X #endif
- X
- X void
- X***************
- X*** 164,170 ****
- X--- 164,175 ----
- X void
- X curs_on_u()
- X {
- X+ #ifdef CLIPPING
- X+ cliparound(u.ux, u.uy);
- X+ (void)win_curs(u.ux, u.uy);
- X+ #else
- X curs(u.ux, u.uy+2);
- X+ #endif
- X }
- X
- X void
- X***************
- X*** 194,199 ****
- X--- 199,205 ----
- X /* print a position that is visible for @ */
- X void
- X prl(x,y)
- X+ int x, y;
- X {
- X register struct rm *room;
- X register struct monst *mtmp = (struct monst *)0;
- X***************
- X*** 278,284 ****
- X else if(ttmp && ttmp->tseen) tmp = TRAP_SYM;
- X else switch(room->typ) {
- X case SCORR:
- X! tmp = STONE_SYM;
- X break;
- X case SDOOR:
- X croom = inroom(x,y);
- X--- 284,290 ----
- X else if(ttmp && ttmp->tseen) tmp = TRAP_SYM;
- X else switch(room->typ) {
- X case SCORR:
- X! tmp = ' '; /* _not_ STONE_SYM! */
- X break;
- X case SDOOR:
- X croom = inroom(x,y);
- X***************
- X*** 323,329 ****
- X tmp = BRCORN_SYM;
- X break;
- X case DOOR:
- X! tmp = DOOR_SYM;
- X break;
- X case CORR:
- X tmp = CORR_SYM;
- X--- 329,355 ----
- X tmp = BRCORN_SYM;
- X break;
- X case DOOR:
- X! if (room->doormask == D_NODOOR || room->doormask & D_BROKEN)
- X! tmp = NO_DOOR_SYM;
- X! else if (room->doormask & (D_CLOSED|D_LOCKED))
- X! tmp = CLOSED_DOOR_SYM;
- X! /* We know door is open. */
- X! else {
- X! croom=inroom(x,y);
- X! if(croom == -1) {
- X! #ifdef STRONGHOLD
- X! if(IS_WALL(levl[x-1][y].typ)||IS_WALL(levl[x+1][y].typ))
- X! tmp = H_OPEN_DOOR_SYM;
- X! else
- X! tmp = V_OPEN_DOOR_SYM;
- X! #else
- X! impossible("door %d %d not in room",x,y);
- X! #endif
- X! } else if(rooms[croom].ly<=y && y<=rooms[croom].hy)
- X! tmp = V_OPEN_DOOR_SYM;
- X! else
- X! tmp = H_OPEN_DOOR_SYM;
- X! }
- X break;
- X case CORR:
- X tmp = CORR_SYM;
- X***************
- X*** 424,430 ****
- X
- X if(!isok(x,y)) return;
- X room = &levl[x][y];
- X! if(room->scrsym == ROOM_SYM && !room->lit && !Blind) {
- X room->scrsym = STONE_SYM; /* was ' ' -- OIS */
- X room->new = 1;
- X on_scr(x,y);
- X--- 450,457 ----
- X
- X if(!isok(x,y)) return;
- X room = &levl[x][y];
- X! if(IS_FLOOR(levl[x][y].typ)
- X! && !room->lit && !Blind) {
- X room->scrsym = STONE_SYM; /* was ' ' -- OIS */
- X room->new = 1;
- X on_scr(x,y);
- X***************
- X*** 484,493 ****
- X if(x == u.ux && y == u.uy && !Invisible) return(1);
- X
- X if(MON_AT(x, y))
- X! if (Blind && Telepat || canseemon(m_at(x,y)))
- X! return(1);
- X! else return ((HTelepat & WORN_HELMET) &&
- X! (dist(x, y) <= (BOLT_LIM * BOLT_LIM)));
- X return(0);
- X }
- X
- X--- 511,517 ----
- X if(x == u.ux && y == u.uy && !Invisible) return(1);
- X
- X if(MON_AT(x, y))
- X! return(showmon(m_at(x,y)));
- X return(0);
- X }
- X
- X***************
- X*** 539,541 ****
- X--- 563,664 ----
- X }
- X }
- X #endif
- X+
- X+
- X+ #ifdef STUPID_CPP /* otherwise these functions are macros in rm.h */
- X+ boolean IS_WALL(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ && typ <= TRWALL);
- X+ }
- X+
- X+ boolean IS_STWALL(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ <= TRWALL); /* STONE <= (typ) <= TRWALL */
- X+ }
- X+
- X+ boolean IS_ROCK(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ < POOL); /* absolutely nonaccessible */
- X+ }
- X+
- X+ boolean IS_DOOR(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ == DOOR);
- X+ }
- X+
- X+ boolean IS_FLOOR(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ == ROOM);
- X+ }
- X+
- X+ boolean ACCESSIBLE(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ >= DOOR); /* good position */
- X+ }
- X+
- X+ boolean IS_ROOM(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ >= ROOM); /* ROOM, STAIRS, furniture.. */
- X+ }
- X+
- X+ boolean ZAP_POS(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ >= POOL);
- X+ }
- X+
- X+ boolean SPACE_POS(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ > DOOR);
- X+ }
- X+
- X+ boolean IS_POOL(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ >= POOL && typ <= DRAWBRIDGE_UP);
- X+ }
- X+
- X+ boolean IS_THRONE(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ == THRONE);
- X+ }
- X+
- X+ boolean IS_FOUNTAIN(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ == FOUNTAIN);
- X+ }
- X+
- X+ boolean IS_SINK(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ == SINK);
- X+ }
- X+
- X+ boolean IS_ALTAR(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ == ALTAR);
- X+ }
- X+
- X+ boolean IS_DRAWBRIDGE(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ == DRAWBRIDGE_UP || typ == DRAWBRIDGE_DOWN);
- X+ }
- X+
- X+ boolean IS_FURNITURE(typ)
- X+ unsigned typ;
- X+ {
- X+ return(typ >= STAIRS && typ <= ALTAR);
- X+ }
- X+ #endif /* STUPID_CPP */
- END_OF_FILE
- if test 55338 -ne `wc -c <'patches06j'`; then
- echo shar: \"'patches06j'\" unpacked with wrong size!
- fi
- # end of 'patches06j'
- fi
- echo shar: End of archive 4 \(of 15\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 15 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-